#include <jni.h>
#include <string>

extern "C" {
    #include <libavutil/avutil.h>
}

extern "C" JNIEXPORT jstring JNICALL
Java_com_fanqi_nxplayer_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    hello.append(av_version_info());

    //在JNI中去调用Java层的对象，方法
    const char *person_clas_str="com/fanqi/nxplayer/Person";
    jclass person_class=env->FindClass(person_clas_str);
    jobject person=env->AllocObject(person_class);

    const char *sig="(I)V";
    jmethodID setAge=env->GetMethodID(person_class,"setAge", "(I)V");
    env->CallVoidMethod(person,setAge,18);

    jstring name=env->NewStringUTF("XXXX");
    jmethodID setName=env->GetMethodID(person_class,"setName", "(Ljava/lang/String;)V");
    env->CallVoidMethod(person,setName,name);

    //还有一种，利用env->NewObject去实例化这个对象。

    return env->NewStringUTF(hello.c_str());
}


//jni动态注册，一般商用的都用这种模式。无法通过点击或者连接直接找到方法。

//JNIEnv *env是无法跨线程，只有JavaVm才可以。




